package tenth.通配符;
// 使用通配符 ?

public class 使用通配符 {
    public static void main(String[] args) {
        Info<String> info = new Info<>();
        info.setVar("珍惜时间");
        fun(info);  // 错误 无法传递
    }

    public static void fun(Info<?> temp) {   // 此处可以接收Info的对象
        System.out.println("内容：" + temp);
    }


}
/**
 * 在fun()方法中使用Info<?>的代码形式，，表示可以引用任意的泛型类型对象，但是在使用以上语法时候需要注意：
 * 如果用“？”接收泛型对象时，则不能设置被泛型指定的内容
 * <p>
 * Info<?> info =new Info<>(); //使用？接收泛型对象
 * info.setVar("张三");  //错误，无法设置
 * <p>
 * 上面的程序因使用了Info<?>的形式，所以无法给var设置属性
 * 但是可以设置成 null 值
 * <p>
 * Info<?> info = new Info<>(); // 使用？接收泛型对象
 * info.setVar(null);  // null，可以设置
 *
 */

/*
D:\WorkSpaces\Java\jdk-21\bin\java.exe "-javaagent:D:\Software\IntelliJ IDEA\IntelliJ IDEA 2023.3.2\lib\idea_rt.jar=53060:D:\Software\IntelliJ IDEA\IntelliJ IDEA 2023.3.2\bin" -Dfile.encoding=UTF-8 -Dsun.stdout.encoding=UTF-8 -Dsun.stderr.encoding=UTF-8 -classpath D:\WorkSpaces\JavaDevelopBase_start_329\out\production\JavaDevelopBase_start_329 tenth.通配符.使用通配符
内容：珍惜时间

Process finished with exit code 0

 */